﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

class PersonThis
{
public:
	PersonThis(int age)
	{
		//age = age;
		//1.this指针可以解决命名冲突；此时this就是PersonThis* this，指向调用的对象，如p1；
		this->age = age;
	}

	//2.对比年龄；
	void compareAge(PersonThis& p)
	{
		if (this->age == p.age)
		{
			cout << "年龄相等！" << endl;
		}
		else
		{
			cout << "年龄不相等！" << endl;
		}
	}

	//3.年龄相加；
	/*void plusAge(PersonThis& p)
	{
		this->age += p.age;
	}*/
	PersonThis& plusAge(PersonThis& p)
	{
		this->age += p.age;
		//4.*this指向调用的对象本体p1；
		return *this;
	}

	int age;
};
void testThisPointer()
{
	PersonThis p1(10);
	cout << "p1的年龄：" << p1.age << endl;//-858993460 --> 10

	PersonThis p2(10);
	p1.compareAge(p2);//年龄相等！

	//p1.plusAge(p2);
	//p1.plusAge(p2).plusAge(p2);
	p1.plusAge(p2).plusAge(p2).plusAge(p2);
	cout << "p1的年龄：" << p1.age << endl;//20 --> 30 --> 40
}

//main270：this指针的用法
int main270()
{
	testThisPointer();

	system("pause");
	return EXIT_SUCCESS;
}